通过 docker |
您所在的位置:网站首页 › docker nginx keepalived › 通过 docker |
目录
1、搭建环境2、Keepalived介绍3、搭建步骤
1、搭建环境
两台虚拟机 CentOS Linux release 7.9.2009 (Core) Docker version 23.0.1 Docker-compose version 1.25.0-rc4 2、Keepalived介绍Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用。 Keepalived 以 VRRP 协议为实现基础。 VRRP(Virtual RouterRedundancy Protocol)协议是用于实现路由器冗余的协议, 它将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器 IP(一个或多个),而在路由器组内部,如果实际拥有这个对外 IP 的路由器如果工作正常就是 MASTER,或者是通过算法选举产生, MASTER 实现针对虚拟路由器 IP 的各种网络功能,其他设备不拥有该虚拟 IP,状态是 BACKUP,除了接收 MASTER 的VRRP 状态通告信息外,不执行对外的网络功能。 当主机失效时, BACKUP 将接管原先 MASTER 的网络功能。VRRP 协议使用多播数据来传输 VRRP 数据, VRRP 数据使用特殊的虚拟源 MAC 地址发送数据而不是自身网卡的 MAC 地址, VRRP 运行时只有 MASTER 路由器定时发送 VRRP 通告信息,表示 MASTER 工作正常以及虚拟路由器 IP(组), BACKUP 只接收 VRRP 数据,不发送数据,如果一定时间内没有接收到 MASTER 的通告信息,各 BACKUP 将宣告自己成为 MASTER,发送通告信息,重新进行 MASTER 选举状态。 3、搭建步骤两台主机配置文件目录: /home/docker/nginx/conf在此目录创建了如下文件:
(1)nginx.conf 配置:
后续在docker-compose.yml 中,我配置了将宿主机的 /home/docker/nginx/conf/html 挂载到容器中的 /usr/share/nginx/html。 (2)html/index.html 配置: (3)nginx_check.sh 配置 该脚本被 keepalived 用来检测nginx是否在运行,若 nginx 停止则 keepalived 也停止,就再选出一个 Master。这个脚本在传入容器中需要赋予执行脚本的权限。 (4)keepalived.conf 配置
上述配置中 nopreempt 设置为了非抢占式,即不会按照优先级而切换Master,只有当当前主机宕机后,才切换,如果当前主机是好的,即使有另外一优先级更高的主机,也不会切换。 注意上述配置中 nginx_check.sh 需要在 keepalived 容器中的位置。 (5)Dockerfile 配置: 基于docker库中的 keepalived 镜像构建镜像,将检查 nginx 的脚本和keepalived.conf 配置文件添加进镜像。 其实这里也可以不用Dockerfile,也可以采用 docker-compose 的形式,区别在于采用Dockerfile的话,nginx_check.sh 和 keepalived.conf 就直接保存在镜像中了。起的容器也自带这俩文件。而docker-compose 是采用挂载的方式,可采用command指令来赋予脚本权限:“chmod +x /etc/keepalived/nginx_check.sh”,每次起容器都需要挂载文件。 (6)docker-compose 配置 (7)执行 docker-compose.yml docker-compose up -d我先在 192.168.182.136 执行 docker-compose 查看 keepalived容器 日志 docker logs 容器id -f // -f 实时跟踪日志输出
然后在 192.168.182.135 启动 docker-compose
测试展示页面: 将当前master主机 192.168.182.136 宕机 // 停止和删除由docker-compose up命令启动的所有容器、网络、卷和镜像。 docker-compose down然后去 192.168.182.135 查看 keepalived 容器日志:
测试展示页面: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |